<?php
include_once('inc/functions.inc.php');

if (!isEmpty(getParam('operation'))) {

    switch (getParam('operation')) {
        case 'e': {
                fntCxpFacturasEmpresas($db);
                break;
            }
        case 'f': {
                fntCxpFacturasFactura($db);
                break;
            }
        case 'fp': {
                fntCxpFacturasProveedorGet($db);
                break;
            }
        case 'fnc': {
                fntCxpFacturasNotaCreditoGet($db);
                break;
            }
        case 'ffp': {
                fntCxpFacturasFechaPago($db);
                break;
            }
        case 's': {
                fntCxpFacturasGrabar($db);
                break;
            }
        case 'fi': {
                fntCxpFacturasIngresadas($db);
                break;
            }
        case 'fis': {
                fntCxpFacturasIngresadasGrabar($db);
                break;
            }
    }
    die();
}

function fntCxpFacturasEmpresas($db) {
    fntEmpresasDraw($db, "sltCxpFacturasEmpresas");
    ?>
    <script type="text/javascript">
        $("select[name='sltCxpFacturasEmpresas']").change( function() {
            $("input[name='txtfacturasId']").val("");
            fntCxpFacturasFactura();
            fntCxpFacturasIngresadas();
        });
    </script>
    <?php
}

function fntCxpFacturasFactura($db) {

    $intEmpresa = getParam("sltCxpFacturasEmpresas");
    date_default_timezone_set("America/Guatemala");
    $strFecha = date("d-m-Y");
    ?>
    <div style="width: 500px; height: 20px; float: left;">&nbsp;</div>
    <div style="width: 100px; height: 30px; float: left;"><b>Proveedor</div>
    <div style="width: 20px;  height: 30px; float: left;"><div id="divFacturasProveedorCambio" style="float: left; margin-right: 0.3em; cursor: pointer;" class="ui-icon ui-icon-transferthick-e-w"></div></div>
    <div style="width: 350px; height: 30px; float: left;">
        <input type="hidden" name="hdnFacturasProveedor" value="" style="width: 350px;" />
        <input type="text" name="txtFacturasProveedor" value="" style="width: 350px;" />
        <div id="divFacturasProveedor"></div>
        <script type="text/javascript">
            $("input[name='txtFacturasProveedor']").autocomplete({
                source: "admin_cuentas_x_pagar_facturas_data.php?operation=fp&sltCxpFacturasEmpresas=<?php print $intEmpresa; ?>",
                minLength: 1,
                select: function( event, ui ) {
                    $("input[name='hdnFacturasProveedor']").val(ui.item.id);
                    $("#divFacturasProveedor").html(ui.item.value);
                    $(this).hide();
                    $("#divFacturasProveedor").show();
                    $("#divFacturasProveedorCambio").show();
                    fntCxpFacturasFechaPago();
                    //$("input[name='txtFacturasNotaCredito']").autocomplete( "option", "source", "admin_cuentas_x_pagar_facturas_data.php?operation=fnc&sltCxpFacturasEmpresas=<?php print $intEmpresa; ?>&hdnFacturasProveedor="+$("input[name='hdnFacturasProveedor']").val() );
                    $("input[name='hdnFacturasNotaCredito']").val("");
                    $("input[name='hdnFacturasNotaCreditoValor']").val("");
                    fntCxpFacturasTotal();
                    fntCxpFacturasNotasCredito();
                }
            });
            $("#divFacturasProveedorCambio").click(function() {
                $("#divFacturasProveedor").hide();
                $("input[name='txtFacturasProveedor']").show().select();
            });
        </script>
    </div>
    <div style="width: 500px; height: 20px; float: left;">&nbsp;</div>    
    <div style="width: 120px; height: 30px; float: left;"><b>Tipo de documento</b></div>
    <div style="width: 130px; height: 30px; float: left;">
        <select name="sltFacturasTipoDocumento" style="width: 100px;" onchange="">
            <option value=""></option>
            <option value="Factura">Factura</option>
            <option value="Recibo">Recibo</option>
            <option value="Otros">Otros</option>
        </select>                                 
    </div>
    <div style="width: 100px; height: 30px; float: left;"><b>Serie</b></div>
    <div style="width: 150px; height: 30px; float: left;"><input type="text" name="txtFacturasSerie" value="" style="width: 120px;" /></div>
    <div style="width: 120px; height: 30px; float: left;">&nbsp;</div>
    <div style="width: 130px; height: 30px; float: left;"><input type="text" name="txtFacturasTipoDocumento" value="" style="width: 100px; display: none;" /></div>
    <div style="width: 100px; height: 30px; float: left;"><b>No. documento</b></div>
    <div style="width: 150px; height: 30px; float: left;"><input type="text" name="txtFacturasNoDocumento" value="" style="width: 120px;" /></div>
    <div style="width: 100px; height: 30px; float: left;"><b>Fecha</b></div>
    <div style="width: 150px; height: 30px; float: left;"><input type="text" name="txtFacturasFecha" value="<?php print $strFecha; ?>" style="width: 120px; text-align: center;" maxlength="10" title="Formato: dd-mm-aaaa" /></div>
    <div style="width: 100px; height: 30px; float: left;"><b>Fecha de pago</b></div>
    <div style="width: 150px; height: 30px; float: left;"><div id="divFacturasFechaPago"></div><input type="text" name="txtFacturasFechaPago" value="" style="width: 120px; text-align: center;" maxlength="10" title="Formato: dd-mm-aaaa" /></div>

    <div style="width: 100px; height: 30px; float: left;"><b>Valor</b></div>
    <div style="width: 150px; height: 30px; float: left;">
        <input type="text" name="txtFacturasValor" value="" style="width: 120px; text-align: right;" />
        <script type="text/javascript">
            $('input[name="txtFacturasValor"]').blur(function() {
                $(this).formatCurrency({ colorize: true, negativeFormat: '-%s%n', roundToDecimalPlace: 2, symbol: strSimbolo });
            }).keyup(function(e) {
                var e = window.event || e;
                var keyUnicode = e.charCode || e.keyCode;
                if (e !== undefined) {
                    switch (keyUnicode) {
                        case 16: break; // Shift
                        case 17: break; // Ctrl
                        case 18: break; // Alt
                        case 27: this.value = ''; break; // Esc: clear entry
                        case 35: break; // End
                        case 36: break; // Home
                        case 37: break; // cursor left
                        case 38: break; // cursor up
                        case 39: break; // cursor right
                        case 40: break; // cursor down
                        case 78: break; // N (Opera 9.63+ maps the "." from the number key section to the "N" key too!) (See: http://unixpapa.com/js/key.html search for ". Del")
                        case 110: break; // . number block (Opera 9.63+ maps the "." from the number block to the "N" key (78) !!!)
                        case 190: break; // .
                        default: $(this).formatCurrency({ colorize: true, negativeFormat: '-%s%n', roundToDecimalPlace: -1, symbol: strSimbolo, eventOnDecimalsEntered: true });
                    }
                }
            });
        </script>
    </div>
    <div style="width: 100px; height: 30px; float: left;"><b>Tipo de compra</b></div>
    <div style="width: 150px; height: 30px; float: left;">
        <select name="sltFacturasTipoCompra" style="width: 120px;">
            <option value="bien">Bien</option>
            <option value="servicio">Servicio</option>
        </select>
    </div>    
    <div style="width: 100px; height: 30px; float: left;"><b>Incluye ISR</b></div>
    <div style="width: 150px; height: 30px; float: left;">Si<input type="radio" name="radFacturasIncluyeIva" value="1" checked="checked">&nbsp;No<input type="radio" name="radFacturasIncluyeIva" value="0"></div>
    <div style="width: 100px; height: 30px; float: left;"><b>Retención</b></div>
    <div style="width: 110px; height: 30px; float: left;">
        <input type="hidden" name="hdnFacturasRetencion" value="">
        Si<input type="radio" name="radFacturasRetencion" value="1">&nbsp;No<input type="radio" name="radFacturasRetencion" value="0" checked="checked">
        <div id="divFacturasRetencion" title="Retención" style="display:none;">
            <br>
            <b>Valor</b>&nbsp;<input type="text" name="txtFacturasRetencionValor" value="0" style="width: 100px; text-align: right">&nbsp;&nbsp;
            <b>%</b>&nbsp;<input type="text" name="txtFacturasRetencionPorcentaje" value="0"  style="width: 100px;  text-align: right">
            <br>
        </div>
    </div>
    <div style="width: 40px;  height: 30px; float: left;"><div id="divFacturasRetencionCambio" style="float: left; margin-right: 0.3em; cursor: pointer; display: none;" class="ui-icon ui-icon-newwin"></div></div>
    <div style="width: 250px; height: 30px; float: left;"></div>
    <div style="width: 100px; height: 30px; float: left;"><b>Valor Exención</b></div>
    <div style="width: 150px; height: 30px; float: left;"><b><input type="text" name="txtFacturasExencionValor" value="" style="width: 120px; text-align: right;"></b></div>
    <div style="width: 250px; height: 30px; float: left;"></div>
    <div style="width: 100px; height: 30px; float: left;"><b>No. Exención</b></div>
    <div style="width: 150px; height: 30px; float: left;"><b><input type="text" name="txtFacturasExencionNumero" value="" style="width: 120px;"></b></div>

    <div style="width: 100px; height: 30px; float: left;"><b>Nota de credito</div>
    <div style="width: 370px; height: 30px; float: left;" id="divFacturasNotaCredito">
        <select name="sltFacturasNotaCredito" id="sltFacturasNotaCredito">
            <option value="">&nbsp;</option>
        </select>
    </div>
    <div style="width: 20px;  height: 30px; float: left; display: none"><div id="divFacturasNotaCreditoCambio" style="float: left; margin-right: 0.3em; cursor: pointer;" class="ui-icon ui-icon-transferthick-e-w"></div></div>
    <div style="width: 350px; height: 30px; float: left; display: none;">
        <input type="hidden" name="hdnFacturasNotaCredito" value="" style="width: 350px;" />
        <input type="hidden" name="hdnFacturasNotaCreditoValor" value="" style="width: 350px;" />
        <input type="text" name="txtFacturasNotaCredito" value="" style="width: 350px;" />
        <div id="divFacturasNotaCredito"></div>
        <script type="text/javascript">
            $("input[name='txtFacturasNotaCredito']").autocomplete({
                source: "admin_cuentas_x_pagar_facturas_data.php?operation=fnc&sltCxpFacturasEmpresas=<?php print $intEmpresa; ?>&hdnFacturasProveedor="+$("input[name='hdnFacturasProveedor']").val(),
                minLength: 1,
                select: function( event, ui ) {
                    $("input[name='hdnFacturasNotaCredito']").val(ui.item.id);
                    $("input[name='hdnFacturasNotaCreditoValor']").val(ui.item.total);
                    $("#divFacturasNotaCredito").html(ui.item.value);
                    $(this).hide();
                    $("#divFacturasNotaCredito").show();
                    $("#divFacturasNotaCreditoCambio").show();
                    fntCxpFacturasTotal();
                }
            });
            $("#divFacturasNotaCreditoCambio").click(function() {
                $("#divFacturasNotaCredito").hide();
                $("input[name='txtFacturasNotaCredito']").show().select();
            });
        </script>
    </div>    
    <div style="width: 100px; height: 60px; float: left;"><b>Descripción</b></div>
    <div style="width: 400px; height: 60px; float: left;"><textarea name="txtFacturasDescripcion" style="width: 370px; height: 45px;"></textarea></div>
    <div style="width: 100px; height: 30px; float: left;"><b>Total a pagar</b></div>
    <div style="width: 400px; height: 30px; float: left;">
        <input type="text" name="txtFacturasTotal" value="" style="width: 120px; text-align: right;" readonly="readonly" />
        <script type="text/javascript">
            $('input[name="txtFacturasTotal"]').blur(function() {
                $(this).formatCurrency({ colorize: true, negativeFormat: '-%s%n', roundToDecimalPlace: 2, symbol: strSimbolo });
            }).keyup(function(e) {
                var e = window.event || e;
                var keyUnicode = e.charCode || e.keyCode;
                if (e !== undefined) {
                    switch (keyUnicode) {
                        case 16: break; // Shift
                        case 17: break; // Ctrl
                        case 18: break; // Alt
                        case 27: this.value = ''; break; // Esc: clear entry
                        case 35: break; // End
                        case 36: break; // Home
                        case 37: break; // cursor left
                        case 38: break; // cursor up
                        case 39: break; // cursor right
                        case 40: break; // cursor down
                        case 78: break; // N (Opera 9.63+ maps the "." from the number key section to the "N" key too!) (See: http://unixpapa.com/js/key.html search for ". Del")
                        case 110: break; // . number block (Opera 9.63+ maps the "." from the number block to the "N" key (78) !!!)
                        case 190: break; // .
                        default: $(this).formatCurrency({ colorize: true, negativeFormat: '-%s%n', roundToDecimalPlace: -1, symbol: strSimbolo, eventOnDecimalsEntered: true });
                    }
                }
            });
        </script>
    </div>
    <div style="width: 500px; height: 20px; float: left;">&nbsp;</div>
    <div style="width: 500px; height: 30px; float: left; text-align: center;"><button id="btnFacturasAgregar" type="button">Agregar</button></div>
    <script type="text/javascript">
        $( function() {
                    
            $("select[name='sltFacturasTipoDocumento']").change( function() {
                        
                if( $(this).val() == "Otros" ) {
                    $("input[name='txtFacturasTipoDocumento']").val("");
                    $("input[name='txtFacturasTipoDocumento']").show();
                }
                else {
                    $("input[name='txtFacturasTipoDocumento']").val($("select[name='sltFacturasTipoDocumento']").val());
                    $("input[name='txtFacturasTipoDocumento']").hide();
                }
                        
                        
            });
                    
            $("input[name='txtFacturasFechaPago']").datepicker({
                changeMonth: true,
                changeYear: true,
                monthNamesShort: ['Ene','Feb','Mar','Abr','May','Jun','Jul','Ago','Sep','Oct','Nov','Dic'],
                dayNamesMin: ['Do', 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sa'],
                dateFormat: 'dd-mm-yy'
            });
            		
            $("input[name='txtFacturasFecha']").datepicker({
                changeMonth: true,
                changeYear: true,
                monthNamesShort: ['Ene','Feb','Mar','Abr','May','Jun','Jul','Ago','Sep','Oct','Nov','Dic'],
                dayNamesMin: ['Do', 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sa'],
                dateFormat: 'dd-mm-yy'
            });
            $("#btnFacturasAgregar").button({
                icons: {
                    primary: "ui-icon-plusthick"
                }
            }).click( function () {
                fntCxpFacturasGrabar();
            });
            $("input[name='txtFacturasFecha']").change( function() {
                fntCxpFacturasFechaPago();
            });
            $("input[name='txtFacturasValor']").change( function() {
                $("input[name='hdnFacturasRetencion']").val("0");
                $("input[name='txtFacturasRetencionValor']").val("0");
                $("input[name='txtFacturasRetencionPorcentaje']").val("0");
                fntCxpFacturasTotal();
            });        
            //Retencion
            $("input[name='radFacturasRetencion']").change( function() {
                        
                if( $(this).val() == 1 ) {
                    fntCxpFacturasRetecionDialog();
                    $("#divFacturasRetencionCambio").show();                
                }
                else {
                    $("input[name='hdnFacturasRetencion']").val("0");
                    $("input[name='txtFacturasRetencionValor']").val("0");
                    $("input[name='txtFacturasRetencionPorcentaje']").val("0");
                    $("#divFacturasRetencionCambio").hide();
                    fntCxpFacturasTotal();
                }
                        
            });
            $("input[name='txtFacturasExencionValor']").change( function() {
                fntCxpFacturasTotal();
            });
            $("input[name='txtFacturasRetencionValor']").change( function() {
                if( $("input[name='txtFacturasValor']").val()*1 <= $(this).val()*1 ) {
                    alert("Valor incorrecto.");
                    $(this).val("0");
                    $("input[name='txtFacturasRetencionPorcentaje']").val("0");
                }
                else {
                    $("input[name='hdnFacturasRetencion']").val( $(this).val() );
                    sinPorcentaje = ( $("input[name='txtFacturasRetencionValor']").val()*1 * 100 ) / $("input[name='txtFacturasValor']").val();
                    sinPorcentaje = sinPorcentaje * 100;
                    sinPorcentaje = Math.round(sinPorcentaje);
                    sinPorcentaje = sinPorcentaje / 100;
                    $("input[name='txtFacturasRetencionPorcentaje']").val(sinPorcentaje);
                }
            });
            $("input[name='txtFacturasRetencionPorcentaje']").change( function() {
                if( 100 <= $(this).val()*1 ) {
                    alert("Valor incorrecto.");
                    $(this).val("0");
                    $("input[name='txtFacturasRetencionValor']").val("0");
                }
                else {
                    sinValor = ( $("input[name='txtFacturasRetencionPorcentaje']").val()*1 * $("input[name='txtFacturasValor']").val() ) / 100;
                    sinValor = sinValor * 100;
                    sinValor = Math.round(sinValor);
                    sinValor = sinValor / 100;
                    $("input[name='txtFacturasRetencionValor']").val(sinValor);
                    $("input[name='hdnFacturasRetencion']").val( sinValor );
                }
            });
            $("#divFacturasRetencionCambio").click( function(){
                fntCxpFacturasRetecionDialog();
            });
            //Retencion
        });
    </script>
    <?php
}

function fntCxpFacturasProveedorGet($db) {

    $arrResult = array();
    $intEmpresa = getParam("sltCxpFacturasEmpresas");
    $term = getParam("term");
    $strQuery = "SELECT * FROM cllg_cp_proveedor
                 WHERE (NIT LIKE '%{$term}%' OR RAZON_SOCIAL LIKE '%{$term}%') 
                 AND    FK_EMPRESA = '{$intEmpresa}'";
    $qTMP = $db->query($strQuery);

    if ($rTMP = $db->fetch_array($qTMP)) {

        do {
            $arrTMP = array();
            $arrTMP["id"] = $rTMP["NIT"];
            $arrTMP["value"] = $rTMP["NIT"] . " - " . $rTMP["RAZON_SOCIAL"];

            array_push($arrResult, $arrTMP);
        } while ($rTMP = $db->fetch_array($qTMP));
    }
    $db->free_result($rTMP);

    print json_encode($arrResult);
}

function fntCxpFacturasNotaCreditoGet1($db) {

    $arrResult = array();
    $intEmpresa = getParam("sltCxpFacturasEmpresas");
    $intProveedor = getParam("hdnFacturasProveedor");
    $term = getParam("term");
    $strQuery = "SELECT * FROM cllg_cp_factura
                 WHERE (SERIE LIKE '%{$term}%' OR NUMERO LIKE '%{$term}%') 
                 AND    FK_EMPRESA = '{$intEmpresa}'
                 AND    TIPO_DOCTO = 'NC'
                 AND    FK_PROVEEDOR = '{$intProveedor}'";
    $qTMP = $db->query($strQuery);

    if ($rTMP = $db->fetch_array($qTMP)) {

        do {
            $arrTMP = array();
            $arrTMP["id"] = $rTMP["ID"];
            $arrTMP["value"] = $rTMP["SERIE"] . " - " . $rTMP["NUMERO"] . " - " . $rTMP["TOTAL"];
            $arrTMP["total"] = $rTMP["TOTAL"];

            array_push($arrResult, $arrTMP);
        } while ($rTMP = $db->fetch_array($qTMP));
    }
    $db->free_result($rTMP);

    print json_encode($arrResult);
}

function fntCxpFacturasNotaCreditoGet($db) {

    $arrResult = array();
    $intEmpresa = getParam("sltCxpFacturasEmpresas");
    $intProveedor = getParam("hdnFacturasProveedor");
    $term = getParam("term");
    $strQuery = "SELECT * FROM cllg_cp_factura
                 WHERE  FK_EMPRESA = '{$intEmpresa}'
                 AND    TIPO_DOCTO = 'NC'
                 AND    FK_PROVEEDOR = '{$intProveedor}'";
    $qTMP = $db->query($strQuery);
    $intNumRows = $db->num_rows;
    ?>
    <select name="sltFacturasNotaCredito" id="sltFacturasNotaCredito">
        <option value="">&nbsp;</option>
        <?php
        if ($intNumRows > 0) {
            while ($rTMP = $db->fetch_array($qTMP)) {
                ?>
                <option value="<?php print $rTMP["ID"] . ";" . $rTMP["TOTAL"]; ?>"><?php print $rTMP["SERIE"] . " - " . $rTMP["NUMERO"] . " ( " . $rTMP["TOTAL"] . " )"; ?></option>
                <?php
            }
        }
        $db->free_result($qTMP);
        ?>
    </select>
    <style>
        .ui-button { margin-left: -1px; }
        .ui-button-icon-only .ui-button-text { padding: 0.35em; } 
        .ui-autocomplete-input { margin: 0; padding: 0.4em 0 0.4em 0.4em; }
    </style>
    <script>
        (function( $ ) {
            $.widget( "ui.combobox", {
                _create: function() {
                    var self = this,
                    select = this.element.hide(),
                    selected = select.children( ":selected" ),
                    value = selected.val() ? selected.text() : "";
                    var input = this.input = $( "<input>" )
                    .insertAfter( select )
                    .val( value )
                    .autocomplete({
                        delay: 0,
                        minLength: 0,
                        source: function( request, response ) {
                            var matcher = new RegExp( $.ui.autocomplete.escapeRegex(request.term), "i" );
                            response( select.children( "option" ).map(function() {
                                var text = $( this ).text();
                                if ( this.value && ( !request.term || matcher.test(text) ) )
                                    return {
                                        label: text.replace(
                                        new RegExp(
                                        "(?![^&;]+;)(?!<[^<>]*)(" +
                                            $.ui.autocomplete.escapeRegex(request.term) +
                                            ")(?![^<>]*>)(?![^&;]+;)", "gi"
                                    ), "<strong>$1</strong>" ),
                                        value: text,
                                        option: this
                                    };
                            }) );
                        },
                        select: function( event, ui ) {  
                                        
                            arrTMP = ui.item.option.value.split(";");
                            $("input[name='hdnFacturasNotaCredito']").val(arrTMP[0]);
                            $("input[name='hdnFacturasNotaCreditoValor']").val(arrTMP[1]);
                            fntCxpFacturasTotal();
                            ui.item.option.selected = true;
                            self._trigger( "selected", event, {
                                item: ui.item.option
                            });
                        },
                        change: function( event, ui ) {
                            if ( !ui.item ) {
                                var matcher = new RegExp( "^" + $.ui.autocomplete.escapeRegex( $(this).val() ) + "$", "i" ),
                                valid = false;
                                select.children( "option" ).each(function() {
                                    if ( $( this ).text().match( matcher ) ) {
                                        this.selected = valid = true;
                                        return false;
                                    }
                                });
                                if ( !valid ) {
                                    // remove invalid value, as it didn't match anything
                                    $( this ).val( "" );
                                    select.val( "" );
                                    input.data( "autocomplete" ).term = "";
                                    return false;
                                }
                            }
                        }
                    })
                    .addClass( "ui-widget ui-widget-content ui-corner-left" );

                    input.data( "autocomplete" )._renderItem = function( ul, item ) {
                        return $( "<li></li>" )
                        .data( "item.autocomplete", item )
                        .append( "<a>" + item.label + "</a>" )
                        .appendTo( ul );
                    };

                    this.button = $( "<button type='button'>&nbsp;</button>" )
                    .attr( "tabIndex", -1 )
                    .attr( "title", "Show All Items" )
                    .insertAfter( input )
                    .button({
                        icons: {
                            primary: "ui-icon-triangle-1-s"
                        },
                        text: false
                    })
                    .removeClass( "ui-corner-all" )
                    .addClass( "ui-corner-right ui-button-icon" )
                    .click(function() {
                        // close if already visible
                        if ( input.autocomplete( "widget" ).is( ":visible" ) ) {
                            input.autocomplete( "close" );
                            return;
                        }

                        // work around a bug (likely same cause as #5265)
                        $( this ).blur();

                        // pass empty string as value to search for, displaying all results
                        input.autocomplete( "search", "" );
                        input.focus();
                    });
                },

                destroy: function() {
                    this.input.remove();
                    this.button.remove();
                    this.element.show();
                    $.Widget.prototype.destroy.call( this );
                }
            });
        })( jQuery );

        $(function() {
            $("#sltFacturasNotaCredito").combobox();
        });
    </script>
    <?php
    //print json_encode($arrResult);
}

function fntCxpFacturasFechaPago($db) {
    date_default_timezone_set("America/Guatemala");
    $intEmpresa = getParam("sltCxpFacturasEmpresas");
    $proveedor = getParam("hdnFacturasProveedor");
    $fecha = getParam("txtFacturasFecha");
    $arrFecha = explode("-", $fecha);
    $strQuery = "SELECT * FROM cllg_cp_proveedor
                 WHERE NIT = '{$proveedor}'
                 AND    FK_EMPRESA = '{$intEmpresa}'";
    $qTMP = $db->query($strQuery);
    $intDiasCredito = 0;
    while ($rTMP = $db->fetch_array($qTMP)) {
        $intDiasCredito = $rTMP["DIAS_CREDITO"];
    }
    $db->free_result($rTMP);
    $strFechaPago = fntCxpFacturasSumaFechas($fecha, $intDiasCredito);
    $arrFechaPago = explode("-", $strFechaPago);
    $strFechaPago = $arrFechaPago[2] . "-" . $arrFechaPago[1] . "-" . $arrFechaPago[0];
    ?>
    <script type="text/javascript">
        $("input[name='txtFacturasFechaPago']").val('<?php print $strFechaPago; ?>');
    </script>
    <?php
}

function fntCxpFacturasGrabar($db) {

    $intEmpresa = getParam("sltCxpFacturasEmpresas");
    $serie = getParam("txtFacturasSerie");
    $numero = getParam("txtFacturasNoDocumento");
    $fecha = getParam("txtFacturasFecha");
    $arrFecha = explode("-", $fecha);
    $fecha = $arrFecha[2] . "-" . $arrFecha[1] . "-" . $arrFecha[0];
    $tipo_doc = getParam("txtFacturasTipoDocumento");
    $valor = getParam("txtFacturasValor");
    $tipo_compra = getParam("sltFacturasTipoCompra");
    $inc_iva = getParam("radFacturasIncluyeIva");
    $reten_iva = getParam("radFacturasRetencion");
    $retencion = getParam("hdnFacturasRetencion");
    $descripcion = getParam("txtFacturasDescripcion");
    $total = getParam("txtFacturasTotal");
    $proveedor = getParam("hdnFacturasProveedor");
    $exencion = isEmpty(getParam("txtFacturasExencionValor")) ? 0.00 : getParam("txtFacturasExencionValor");
    $exencionNumero = isEmpty(getParam("txtFacturasExencionNumero")) ? 0.00 : getParam("txtFacturasExencionNumero");
    $nota_credito = isEmpty(getParam("hdnFacturasNotaCredito")) ? 0 : getParam("hdnFacturasNotaCredito");
    $fecha_pago = getParam("txtFacturasFechaPago");
    $arrFecha_pago = explode("-", $fecha_pago);
    $fecha_pago = $arrFecha_pago[2] . "-" . $arrFecha_pago[1] . "-" . $arrFecha_pago[0];

    $strQuery = "SELECT * FROM cllg_cp_factura WHERE FK_EMPRESA = '{$intEmpresa}' AND SERIE = '{$serie}' AND NUMERO = '{$numero}'";
    $qTMP = $db->query($strQuery);
    $intNumRows = $db->num_rows;
    $db->free_result($qTMP);
    if ($intNumRows == 0) {

        $strQuery = "INSERT INTO cllg_cp_factura
        ( SERIE, NUMERO, FECHA, TIPO_DOCTO, MONTO, TIPO_COMPRA, INC_IVA, RETEN_IVA, RETENCION, DESCRIPCION, TOTAL, ESTADO, FK_PROVEEDOR, SALDO_ANTERIOR, SALDO_ACTUAL, FECHA_PAGO, FK_EMPRESA, EXENCION, EXENCION_NUMERO, NOTA_CREDITO )
        VALUES
        ( '{$serie}', '{$numero}', '{$fecha}', '{$tipo_doc}', '{$valor}', '{$tipo_compra}', '{$inc_iva}', '{$reten_iva}', '{$retencion}', '{$descripcion}', '{$total}', '1', '{$proveedor}', '{$total}', '{$total}', '{$fecha_pago}', '{$intEmpresa}', '{$exencion}', '{$exencionNumero}', '{$nota_credito}' )";
        $db->query($strQuery);
        ?>
        <div class="ui-widget" style="border: 0px solid white; width: 500px; height: auto; vertical-align: bottom;" align="center">
            <div class="ui-state-highlight ui-corner-all" style="margin-top: 0px; padding: 0pt 0.7em; height: auto; width: 220px;"> 
                <span class="ui-icon ui-icon-info" style="float: left; margin-right: 0.3em;"></span>
                Datos guardados.
            </div>
        </div>
        <br>
        <script type="text/javascript">
            $('#frmCxpFacturas').each (function(){
                this.reset();
            });
            $("select[name='sltCxpFacturasEmpresas']").val("<?php print $intEmpresa; ?>");
            $("#divFacturasProveedor").hide();
            $("input[name='txtFacturasProveedor']").show().select();
            $("input[name='hdnFacturasRetencion']").val("0");
            $("input[name='txtFacturasRetencionValor']").val("0");
            $("input[name='txtFacturasRetencionPorcentaje']").val("0");
            $("input[name='hdnFacturasProveedor']").val("");
        </script>
        <?php
    } else {
        ?>
        <div class="ui-widget" style="border: 0px solid white; width: 500px; height: auto; vertical-align: bottom;" align="center">
            <div class="ui-state-error ui-corner-all" style="margin-top: 0px; padding: 0pt 0.7em; height: auto; width: 220px;"> 
                <span class="ui-icon ui-icon-alert" style="float: left; margin-right: 0.3em;"></span>
                Ya existe factura.
            </div>
        </div>
        <br>        
        <?php
    }
}

function fntCxpFacturasIngresadas($db) {

    $intEmpresa = getParam("sltCxpFacturasEmpresas");
    $strWhere = "";
    $strQuery = "SELECT cllg_cp_factura.ID, 
                        IF(cllg_cp_factura.SERIE = '', cllg_cp_factura.NUMERO, CONCAT(cllg_cp_factura.SERIE, ' - ', cllg_cp_factura.NUMERO) ) AS NUMERO, 
                        DATE_FORMAT(FECHA, '%d-%m-%Y') AS FECHA, TOTAL,
                        cllg_cp_proveedor.RAZON_SOCIAL 
                 FROM   cllg_cp_factura,
                        cllg_cp_proveedor 
                 WHERE  cllg_cp_factura.FK_EMPRESA = '{$intEmpresa}' 
                 AND    cllg_cp_factura.CONTRASENA IS NULL 
                 AND    cllg_cp_factura.FK_PROVEEDOR = cllg_cp_proveedor.NIT
                 {$strWhere}  
                 ORDER  BY id";
    $qTMP = $db->query($strQuery);
    $intNumRows = $db->num_rows;
    ?>
    <div style="width: 500px; float: left;">
        <div style="width: 180px; height: 30px; float: left; text-align: center; border-bottom: 1px solid black;"><b>Proveedor</b></div>
        <div style="width: 100px; height: 30px; float: left; text-align: center; border-bottom: 1px solid black;"><b>Número</b></div>
        <div style="width: 100px; height: 30px; float: left; text-align: center; border-bottom: 1px solid black;"><b>Valor</b></div>
        <div style="width: 100px; height: 30px; float: left; text-align: center; border-bottom: 1px solid black;"><b>Fecha</b></div>
        <div style="width: 20px; height: 30px; float: left; text-align: center; border-bottom: 1px solid black;">&nbsp;</div>
    </div>
    <?php
    if ($intNumRows > 0) {

        while ($rTMP = $db->fetch_array($qTMP)) {
            ?>
            <div style="width: 500px; float: left;">
                <div style="width: 180px; height: 30px; float: left;">&nbsp;<?php print $rTMP["RAZON_SOCIAL"]; ?></div>
                <div style="width: 100px; height: 30px; float: left; text-align: center;"><?php print $rTMP["NUMERO"]; ?></div>
                <div style="width: 100px; height: 30px; float: left; text-align: right;"><?php print number_format($rTMP["TOTAL"], 2); ?></div>
                <div style="width: 100px; height: 30px; float: left; text-align: center;"><?php print $rTMP["FECHA"]; ?></div>
                <div style="width: 20px; height: 30px; float: left; text-align: center;"><input type="checkbox" name="chkCxpFacturasID_<?php print $rTMP["ID"]; ?>" value="<?php print $rTMP["ID"]; ?>"></div>
            </div>
            <?php
        }
        ?>
        <div style="width: 500px; height: 30px;">&nbsp;</div>
        <div style="width: 500px; height: 30px; float: left; text-align: center;"><button id="btnFacturasEmitir" type="button">Emitir contraseña</button></div>
        <script type="text/javascript">
            $( function() {
                $("#btnFacturasEmitir").button({
                    icons: {
                        primary: "ui-icon-disk"
                    }
                }).click( function () {
                    fntCxpFacturasIngresadasGrabar();
                });
            });
        </script>
        <?php
    } else {
        ?>
        <div style="width: 500px; float: left;">
            <div class="ui-widget" style="width: 500px; height: auto;" align="center">
                <div class="ui-state-highlight ui-corner-all" style="margin-top: 0px; padding: 0pt 0.7em; height: auto; width: 250px;"> 
                    <span class="ui-icon ui-icon-info" style="float: left; margin-right: 0.3em;"></span>
                    No hay ingresadas facturas.
                </div>
            </div>
        </div>
        <?php
    }
    $db->free_result($qTMP);
}

function fntCxpFacturasIngresadasGrabar($db) {

    $intEmpresa = getParam("sltCxpFacturasEmpresas");
    $arrID = array();
    while ($arrPost = each($_POST)) {
        $arrExplode = explode("_", $arrPost["key"]);
        if ($arrExplode[0] == "chkCxpFacturasID") {
            $arrID[$arrExplode[1]] = $arrExplode[1];
        }
    }
    $strID = implode(",", $arrID);
    if (!empty($strID)) {

        $strQuery = "SELECT MAX(CONTRASENA) AS MAXIMO
                     FROM   cllg_cp_factura 
                     WHERE  FK_EMPRESA = '{$intEmpresa}'";
        $qTMP = $db->query($strQuery);
        $intContrasena = 0;
        while ($rTMP = $db->fetch_array($qTMP)) {
            $intContrasena = intval($rTMP["MAXIMO"]) + 1;
        }

        $strQuery = "UPDATE cllg_cp_factura SET CONTRASENA = '{$intContrasena}' WHERE FK_EMPRESA = '{$intEmpresa}' AND ID IN({$strID})";
        $db->query($strQuery);
        ?>
        <div class="ui-widget" style="width: 500px; height: auto;" align="center">
            <div class="ui-state-highlight ui-corner-all" style="margin-top: 0px; padding: 0pt 0.7em; height: auto; width: 250px;"> 
                <span class="ui-icon ui-icon-info" style="float: left; margin-right: 0.3em;"></span>
                Contraseña generada No. <?php print $intContrasena; ?>
            </div>
        </div>
        <br>
        <script type="text/javascript">
            window.open("admin_cuentas_x_pagar_facturas_print.php?sltCxpFacturasEmpresas=<?php print $intEmpresa; ?>&hdnCxpFacturasContrasena=<?php print $intContrasena; ?>", "_blank");
        </script>
        <?php
    }
}

function fntCxpFacturasSumaFechas($fecha, $ndias) {
    if (preg_match("/[0-9]{1,2}\/[0-9]{1,2}\/([0-9][0-9]){1,2}/", $fecha))
        list($dia, $mes, $año) = explode("/", $fecha);

    if (preg_match("/[0-9]{1,2}-[0-9]{1,2}-([0-9][0-9]){1,2}/", $fecha))
        list($dia, $mes, $año) = explode("-", $fecha);

    $nueva = mktime(0, 0, 0, $mes, $dia, $año) + $ndias * 24 * 60 * 60;
    $nuevafecha = date("Y-m-d", $nueva);

    return ($nuevafecha);
}
?>